// internal/models/user.go
package models

import (
	"star-go-app/internal/domain/entities/base_model"
	"time"
)

// 用户角色
const (
	//RoleSuperuser = "superuser" // 超级管理员
	RoleAdmin = "admin" // 管理员
	RoleUser  = "user"  // 普通用户
	RoleGuest = "guest" // 访客
)

// 用户模型，继承基础模型
// 注意：除TableName外，所有方法都使用指针接收器以保持一致性
type User struct {
	base_model.BaseModel        // 继承基础模型
	Username             string `gorm:"size:50;uniqueIndex;not null" json:"username"` // 用户名
	Password             string `gorm:"size:100;not null" json:"-"`                   // 密码
	Email                string `gorm:"size:100;uniqueIndex;not null" json:"email"`   // 邮箱
	Phone                string `gorm:"size:20" json:"phone"`                         // 电话
	Nickname             string `gorm:"size:50" json:"nickname"`                      // 昵称
	IsSuperuser          bool   `gorm:"default:false" json:"is_superuser"`            // 是否是超级管理员

	// Avatar 字段已移除
	RoleID    uint       `gorm:"default:3" json:"role_id"`                // 角色ID，默认为普通用户
	Role      *Role      `gorm:"foreignKey:RoleID" json:"role,omitempty"` // 角色关联
	Status    int        `gorm:"default:1" json:"status"`                 // 状态：1正常 0禁用
	LastLogin *time.Time `json:"last_login"`                              // 最后登录时间
}

// 表名
func (User) TableName() string {
	return "star_users"
}
